Microphone.setSilenceLevel()

Доступность

Flash Player 6.

Синтаксис

active_mic.setSilenceLevel(level:Number [, timeout:Number]) : Void

Параметры

level Число, определяющее минимальную громкость, при которой активируется Microphone.onActivity(true). Допустимы значения от 0 до 100. Значение по умолчанию — 10.

timeout Необязательный параметр. Число, определяющее, через сколько миллисекунд неактивности Flash сочтет, что захват звука остановлен и вызовет Microphone.onActivity(false). Значение по умолчанию — 2000 (2 секунды).

Возвращает

Ничего.

Описание

Метод; устанавливает нижний порог громкости, который будет считаться звуком, и (необязательно) длительность тишины, указывающей на то, что запись закончена.

Определение активности состоит в определении того, говорит ли пользователь. Когда пользователь не говорит, можно снизить количество передаваемых данных, т.к. аудиопоток передавать необходимости нет. Эта информация также может быть использована для оповещения других пользователей о том, что человек молчит.

Понятие тишины связано с установленным порогом активности. Полной тишине соответствует нулевой уровень активности. Постоянный громкий шум (громкость в данном случае зависит от установок громкости микрофона) соответствует значению 100. Когда уровень громкости настроен верно, уровень активности ниже порогового, когда Вы молчите и выше, когда говорите.

Этот метод схож с Camera.setMotionLevel(); оба метода используются для определения, когда будет вызван обработчик события onActivity. Однако, методы серьезно отличаются в плане использования канала:

Пример

В примере ниже пороговый уровень тишины меняется в зависимости от значения, заданного пользователем при помощи компонента NumericStepper, названного silenceLevel_nstep. Компонент ProgressBar silenceLevel_pb показывает значение активности, если он выше порогового.

var silenceLevel_pb:mx.controls.ProgressBar;
var silenceLevel_nstep:mx.controls.NumericStepper;

this.createEmptyMovieClip("sound_mc", this.getNextHighestDepth());
var active_mic:Microphone = Microphone.get();
sound_mc.attachAudio(active_mic);

silenceLevel_pb.label = "Уровень активности: %3";
silenceLevel_pb.mode = "manual";
silenceLevel_nstep.minimum = 0;
silenceLevel_nstep.maximum = 100;
silenceLevel_nstep.value = active_mic.silenceLevel;

var nstepListener:Object = new Object();
nstepListener.change = function (evt:Object) {
  active_mic.setSilenceLevel(evt.target.value, active_mic.silenceTimeOut);
};
silenceLevel_nstep.addEventListener("change", nstepListener);

this.onEnterFrame = function() {
  silenceLevel_pb.setProgress(active_mic.activityLevel, 100);
};
active_mic.onActivity = function (active:Boolean) {
  if (active) {
    silenceLevel_pb.indeterminate = false;
    silenceLevel_pb.setStyle("themeColor", "haloGreen");
    silenceLevel_pb.label = "Уровень активности: %3";
  } else {
    silenceLevel_pb.indeterminate = true;
    silenceLevel_pb.setStyle("themeColor", "0xFF0000");
    silenceLevel_pb.label = "Уровень активности: (неактивен)";
  }
};

Для более подробной информации смотри пример в разделе Camera.setMotionLevel().

См. также

Microphone.activityLevel, Microphone.onActivity, Microphone.setGain(), Microphone.silenceLevel, Microphone.silenceTimeOut